מערכות מעברים Systems( )Transition גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון
2 תזכורת: Checking( )Model בדיקות מודל מערכת דרישות מידול פירמול תכונות פורמליות בדיקות מודל )Model Checking( מודל של המערכת סימולציה דוגמה נגדית התכונות הוכחה
3 מערכות מעברים Systems( )Transition מודל לתיאור התנהגויות מערכת גרף מכוון שבו צמתים מייצגים מצבים וקשתות מתארות מעברים בין המצבים דוגמאות למצב מערכת: הצבע הנכחי של הרמזור ערך כל האוגרים והסיביות ערך משתני התכנית כולל program counter מצב ב ' פעולה מצב א ' דוגמאות למעבר )שינוי מצב( החלפת צבע הרמזור ביצוע פקודה בתוכנית שינוי ערך האוגרים
4 )tuple( מערכת מעברים סדורה שישיה מערכת מעברים נתונה על-ידי hs, Act,, I, AP, Li כש- היא קבוצת ו I µ S המצבים היא קבוצת המצבים ההתחלתיים S Act היא קבוצת הפעולות µ S Act S AP הוא יחס המעברים היא קבוצת הפסוקים האטומיים L: S 2 AP היא פונקצית תיוג יחס המכיל שלשות כמו iמתג דולק, מסומן גם ע"י מתג דולק הדלקה, מתג כבויh הדלקה מתג כבוי קבוצת תת הקבוצות של AP S ו- Act הן קבוצות סופיות )או בנות מנייה( סימון: s s α במקום hs,,s i 2
5 ייצוג גראפי פעולה מצב מתג דולק הדלקה מתג כבוי }חשמל זורם, יש אור{ }חשמל לא זורם, אין אור } קבוצת תכונות המתקיימות כשנמצאים במצב
6 דוגמא: מכונה אוטומטית למכירת משקאות pay get_sprite insert_coin get_beer sprite select beer S = fpay; select; sprite; beerg I = fpayg Act = finsert coin; get beer; get spriteg! = fpay insert coin! select; beer get beer! pay; : : : g
7 דוגמה: פסוקים אטומיים הפסוקים האטומיים נקבעים ע"פ התכונות שרוצים לדבר עליהן בחירה קלה: שמות המצבים מתפקדים גם כפסוקים אטומיים בחירה אחרת: עבור התכונה "המכונה נותנת משקה רק לאחר שהתקבל תשלום", שאיננה מתייחסת לסוג המשקה, מספיקים הפסוקים: AP = {paid,drink} ופונקציית התיוג: L(pay)=;, L(soda)=L(beer)={paid,drink}, L(select)={paid}
8 מצבים עוקבים ומצבים קודמים Pre(s; ) = fs 0 2 S : s 0! sg α α s α α α α Post(s; ) = fs 0 2 S : s! s 0 g
9 מצבים עוקבים ומצבים קודמים Pre(C; ) = [ s2c Pre(s; ) α α α α α s 2 α α s 1 α C = fs 1 ; s 2 g Post(C; ) = [ s2c Post(s; )
10 מצבים עוקבים ומצבים קודמים Pre(s) = [ Pre(s; ) 2Act b a s c a b c Post(s) = [ 2Act Post(s; )
11 מצבים עוקבים ומצבים קודמים : 2 Act קבוצת המצבים העוקבים/קודמים למצב s 2 S במעבר Post(s; ) = fs 0 2 S : s! s 0 g Pre(s; ) = fs 0 2 S : s 0! sg קבוצת המצבים העוקבים/קודמים למצב s 2 S )לכל המעברים(: Post(s) = [ Post(s; ) 2Act Pre(s) = [ 2Act Pre(s; ) קבוצת המצבים העוקבים/קודמים לקבוצת מצבים C µ S ומעבר : 2 Act Post(C; ) = [ Post(s; ) Pre(C; ) = [ Pre(s; ) s2c s2c קבוצת המצבים העוקבים/קודמים לקבוצת מצבים C µ S )לכל המעברים(: Post(C) = [ Post(s) Pre(C) = [ Pre(s) s2c s2c
12 מצבים סופיים )סופניים?( מצב s במערכת מעברים נקרא אם סופי Post s = בתוכנות המבצעות חישובים סדרתיים: מצבים סופיים הם תופעה טבעית המייצגת את סיום התוכנית במערכות תגובתיות )ריאקטיביות(: מצבים כאלה מייצגים "תקיעה" ובד"כ אינם רצויים
13 תפקיד אי-הדטרמיניזם אי-דטרמיניזם למידול: מנוצל מקביליות ע"י שזירת )interleaving( אין הנחות על המהירות היחסית בין התהליכים חופש מימוש פעולות התהליכים מתארים רק מה המערכת צריכה לעשות, לא איך מתאים למידול בשלבי הגדרת הדרישות והתכנון אח"כ מעדנים את המודל אבסטרקציה של מערכות משתמשים במידע חלקי הערה: בתורת האוטומטים אי-דטרמיניזם מאפשר תאור קומפקטי של שפות אנחנו משתמשים באי-דטרמיניזם מסיבות אחרות. )אקספוננציאלית כאן יותר קטן(.
14 דטרמיניזם ע"פ פעולה וע"פ תיוג פעולה-דטרמיניסטית אם: מערכת מעברים hs, Act,, I, AP, Li היא בעלת וגם s ו- לכל Post(s, ) 1 I 1 תיוג-דטרמיניסטי אם: מערכת מעברים hs, Act,, I, AP, Li היא בעלת A µ AP s וגם 1 L(s )=A} Post(s) Å { s 2 S : ולכל לכל I 1 של עוקבים s בעלי תיוג זהה
15 סמנטיקה: ריצות ומקטעי ריצות מקטע ריצה סופי של מערכת מעברים הוא רצף מתחלף של מצבים ופעולות המסתיים במצב: i+1 ½ = s 0 1 s 1 2 : : : n s n such that s i! s i+1 for all 0 i n מקטע ריצה אינסופי של מערכת מעברים הוא רצף מתחלף אינסופי של מצבים ופעולות: i+1 ½ = s 0 1 s 1 2 : : : such that s i! s i+1 for all 0 i ריצה של מערכת מצבים היא מקטע ריצה התחלתי ומקסימאלי מקטע ריצה הוא התחלתי אם s 0 2 I מקטע ריצה מקסימאלי הוא מקטע ריצה סופי המסתיים במצב סופי )ללא עוקבים(, אינסופי או מקטע ריצה
16 דוגמאות ריצה ½ 1 = pay coin! select! sprite get sprite! pay coin! select! sprite get sprite! : : : ½ 2 = select! sprite get sprite! pay coin! select! coke get coke! : : : ½ 3 = pay coin! select! sprite get sprite! pay coin! select! sprite ½ 3 הם ½ 2 ו- הריצה מקטעי ½ 1 התחלתיים. איננו התחלתי. אינו מקסימאלי כיוון שאינו מסתיים במצב סופי. ½ 3 ½ 2 בהנחה ש- ½ 1 ו- הם אינסופיים, מקסימאליים.
17 מצבים נגישים States( )Reachable :s נגיש נקרא מצב s 2 S אם קיים מקטע ריצה התחלתי המסתיים ב s 0 1! s1 2! n! sn = s TS היא קבוצת כל המצבים הנגישים במערכת Reach(TS)
18 דוגמה: מידול מעגלים לוגיים x XOR NOT y x = 0, r = 0 x = 1, r = 0 {y} {x} OR x = 0, r = 1 x = 1, r = 1 r {r} {x,r,y} תרגום מסכימת מעגל לוגי למערכת מעברים r )register( משתנה פלט y ואוגר משתנה קלט x, פונקצית הפלט r) :(x והקלט לאוגר x Ç r
19 פסוקים אטומיים שתי אפשרויות לתיוג המצבים: נבחר AP={x,y,r} L(hx=1, r=1i)={x,r,y} L(hx=1, r=0i)={x} L(hx=0, r=1i)={r} L(hx=0, r=0i)={y} תכונה לדוגמה: "ברגע שהאוגר הוא אחד הוא נשאר אחד" נבחר AP={x,y} עכשיו ערכי האוגר "בלתי נראים" L(hx=1, r=1i)={x, y} L(hx=1, r=0i)={x} L(hx=0, r=1i)=; L(hx=0, r=0i)={y} תכונה לדוגמה: "ערך משתנה הפלט y מוחלף אינסוף פעמים" אי אפשר לתאר תכונות המתייחסות לערך האוגר
20 מ ת כו ן לתרגום סכימת מעגל לוגי למערכת מעברים הרחבת הרעיון שהוצג בדוגמה שראינו ניתן לממש מהדר :)compiler( קלט: פלט: סכימת מעגל לוגי מערכת מעברים דוגמה ל-"שפה עילית" )problem domain( המותאמת לתחום הבעיה מאפשר לנו להתרכז בבדיקות מודל עבור מערכות מעברים בהנחה שהתרגום מעולם המושגים של הבעיה יכול להיות אוטומטי
21 דוגמה: מעברים מותנים תוכניות תלויות-נתונים בנויות מפקודות מהצורה: if x%2 = 1 then x = x + 1 else x = 2x fi מידול כמערכת מעברים: אפשר להשמיט את התנאים ולתרגם למעבר לא דטרמיניסטי אפשר גם לכתוב את התנאים והפעולות על החצים: x%2 = 1 x = x + 1 x%2 = 0 x 2x תוכנית גרף נקרא לזה אח"כ נפרוש )unfold( למערכת מצבים רגילה )באופן אוטומטי(
22 דוגמה: שכלול מודל מכונת השתייה סופרים כמות בקבוקי הספרייט והבירה ומחזירים מטבע אם המכונה ריקה: start select true : coin! select start nsprite>0 : get sprite! start select select true : re ll! select nbeer=0^nbeer=0 : ret coin! start nbeer>0 : get coke! start פעולה coin ret_coin get_sprite get_beer refill השפעה על משתנים nsprite = nsprite 1 nbeer = nbeer 1 nsprite = max; nbeer = max
23 גרף תוכנית x%2 = 1 x = x + 1 כלי למידול תוכניות עם משתנים ותנאים x%2 = 0 x = 2x גרף מכוון עם סימונים על הקשתות: הצמתים הם המקומות בתוכנית הקשתות מסומנות בביטויים מהצורה : תנאי פעולה התנאים קובעים איזה קשתות "מאופשרות" הפעולות מעדכנות את ערכי המשתנים
24 הצבות, תנאים והשפעה קבוצת ההשמות )evaluations( :Eval(Var) השמה היא פונקציה המתאימה לכל משתנה ערך למשל: = 11 η(x) ו- 8 = η(y) :Cond(Var) קבוצת התנאים )conditions( נוסחאות בתחשיב פסוקים. הפסוקים האטומיים מהצורה x D למשל: 2z) < x 19 y = up (x 7 השפעת )effect( הפעולה מתוארת ע"י מיפוי: Effect: Act Eval Var Eval(Var) דוגמה: + 5 y α x ו- המוגדרת למעלה Effect(α, η)(x) = η(y) + 5 = 3 Effect α, η y = η(y) = 8
25 גרף תוכנית Var גרף תוכנית graph( )program מעל קבוצת משתנים הוא Loc, Act, Effect,, Loc 0, g 0 Loc 0 Loc היא קבוצת מקומות )locations( עם מצבים התחלתיים Loc Act היא קבוצת הפעולות Cond היא קבוצת התנאים Eval(Var) Effect: Act Eval Var היא פונקציית ההשפעה Loc Cond Act Loc הוא יחס המעברים g 0 Cond הוא תנאי ההתחלה h l, g,, l i 2 במקום l g: סימון:! l 0
26 מכונת משקאות Loc = *start, select+ with Loc 0 = start Act = *get _ beer, get _ sprite, coin, retcoin, refill+ Var = *nsprite, nbeer+ both with domain *0,1,, 100+ Effect(coin, η) = η Effect(retcoin, η) = η Effect(get _ sprite, η) = η,nsprite = nsprite 1- Effect(get _ beer, η ) = η,nbeer = nbeer 1- Effect(refill,η) =,nsprite = 100, nbeer = 100- g 0 = (nsprite = 100 nbeer = 100)
27 מגרף תוכנית למערכת מעברים g 0 רעיון בסיסי: )unfolding( פריסה מצב = מקום בתוכנית + l השמה למשתנים מצב התחלתי = מצב המקיים את תנאי ההתחלה פסוקים ותיוג פסוקים: l at ו D x 2 עבור dom(x) D µ hl, i מתוייג ב- l at ובל התנאים שמתקיימים ב- hl, i hl,effect(, )i g אם l l! מתקיים ב ו אז g :
28 סמנטיקת פעולה פורמאלית משמעות הסימון : הנחה מסקנה אם הפסוק מעל הקו )ההנחה( מתקיים, אז הפסוק מתחת לקו נכון )המסקנה( "... אז "אם פסוקי..., כאלה נקראים כללי הסק כשההנחה היא טאוטולוגיה, אפשר להשמיט אותה )וגם את הקו המפריד( המקרה האחרון נקרא גם אקסיומה
29 מערכת מעברים לגרף התוכנית בהנתן גרף תוכנית, נגדיר מערכת מעברים: l g:! l 0 ^ j= g hl; i! hl 0 ; Effect( ; )i S = Loc Eval(Var) µ S Act S מצבים: מעברים: מוגדר ע"י I = {h l, i: l 2 Loc 0, ² g 0 } AP = Loc [ Cond מצבים התחלתיים: פסוקים אטומיים: תוויות: } g L(hl, i) = { l } [ { g 2 Cond(Var): ²
מערכת מעברים למכונת המשקאות 30
31 מערכות מעברים אוטומטים סופיים בניגוד לאוטומטים סופיים במערכות מעברים: אין מצבים מקבלים מספר המצבים והפעולות יכול להיות בן-מנייה יכולים להיות אינסוף עוקבים פעולות תלויות בסנכרון )נדבר בהרצאה הבאה...( תפקיד שונה לאי-דטרמיניסטיות מערכות מצבים מתאימות למידול התנהגות מערכות תגובתיות